#include <iostream>
#include "binary_tree.h"
#include "log.h"

int main() {
    DataStructure::BinaryTree tree;
    tree.Insert(1);
    tree.Insert(2);
    tree.Insert(3);
    tree.Insert(4);
    tree.Insert(5);

    SYS_LOG(_INFO) << "Pre-order Traversal (Recursion): " << '\n';
    tree.PreOrderRecursion();
    SYS_LOG(_INFO) << "Pre-order Traversal (Iterative): " << '\n';
    tree.PreOrderIterative();
    SYS_LOG(_INFO) << "In-order Traversal (Recursion): " << '\n';
    tree.InOrderRecursion();
    // SYS_LOG(_INFO) << "In-order Traversal (Iterative): " << '\n';
    // tree.InOrderIterative();
    SYS_LOG(_INFO) << "Post-order Traversal (Recursion): " << '\n';
    tree.PostOrderRecursion();
    // SYS_LOG(_INFO) << "Post-order Traversal (Iterative): " << '\n';
    // tree.PostOrderIterative();
    SYS_LOG(_INFO) << "Height of tree: " << tree.GetHeight() << '\n';
    SYS_LOG(_INFO) << "Size of tree: " << tree.GetSize() << '\n';
    return 0;
}